package pruebas;

import java.util.Date;
import java.util.List;
import ar.com.uade.administradorsiembra.modelo.Cereal;
import ar.com.uade.administradorsiembra.modelo.Cosecha;
import ar.com.uade.administradorsiembra.modelo.Lote;
import ar.com.uade.administradorsiembra.modelo.Sembradora;
import ar.com.uade.administradorsiembra.modelo.Siembra;
import ar.com.uade.administradorsiembra.modelo.exceptions.CantidadSembradaInsuficienteParaCosechaException;
import ar.com.uade.administradorsiembra.modelo.reglas.MotorValidaciones;
import ar.com.uade.administradorsiembra.modelo.reglas.RNCerealMayorRendimiento;
import ar.com.uade.administradorsiembra.modelo.reglas.RNMineralPrincipal;
import ar.com.uade.administradorsiembra.modelo.reglas.RNPosiblesCereales;
import ar.com.uade.administradorsiembra.modelo.reglas.RNSeleccionTipoCereal;
import ar.com.uade.administradorsiembra.persistencia.LoteMapper;
import ar.com.uade.administradorsiembra.persistencia.SiembraMapper;

public class SembradoraPrueba {

	public static void main(String[] args) {
		/*
		 * Crear Siembras!
		 * 
		 */
		MotorValidaciones motorValidaciones = new MotorValidaciones();
		motorValidaciones.addRegla(new RNMineralPrincipal(1));
		motorValidaciones.addRegla(new RNSeleccionTipoCereal(2));
		motorValidaciones.addRegla(new RNPosiblesCereales(3));
		motorValidaciones.addRegla(new RNCerealMayorRendimiento(4));
		
		LoteMapper lotesRepo = new LoteMapper();
		List<Lote> lotes = lotesRepo.buscarTodos();
		Date fechaDesde = new Date();
		Date fechaHasta = new Date();
		Sembradora sembradora = new Sembradora();
		Siembra siembra;
		Cosecha cosecha;	
		Cereal cerealASembrar = null;
		
		for (Lote lote : lotes) {
			
			cerealASembrar = sembradora.obtenerCerealASembrar(lote, motorValidaciones);
			
			if (cerealASembrar != null) {
				siembra = sembradora.getSiembra(cerealASembrar, fechaDesde,
						fechaHasta);
				siembra.sembrarLote(lote);
			} else {
				lotes.remove(lote);
			}
		}

		/*
		 * Crear Cosechas!
		 * 
		 */		
		lotesRepo.guardarTodos(lotes);
		SiembraMapper siembraRepo = new SiembraMapper();
		
	}
}
